package com.adisi.objetos;

import java.util.List;

import com.adisi.bd.AlertaDatos;

public class AlertaManager {

	public static List<Alerta> conseguirTodasLasAlertas() {
		AlertaDatos ad = new AlertaDatos();
		
		List<Alerta> alertas = null;
		
		try {
			alertas = ad.conseguirTodasLasAlertas(null, 0, null, null);			
		}
		catch (Exception e) {
			e.printStackTrace();
		}
		
		return alertas;
	}	
	
	
	public static List<Alerta> conseguirTodasLasAlertas(String objeto, int idObjeto, String motivo,  EstadoAlerta estado) {
		AlertaDatos ad = new AlertaDatos();
		
		List<Alerta> alertas = null;
		
		try {
			alertas = ad.conseguirTodasLasAlertas(objeto, idObjeto, motivo, estado);
			
		}
		catch (Exception e) {
			e.printStackTrace();
		}
		
		return alertas;
	}	
	
	public static List<Alerta> conseguirTodasLasAlertas(char tipoAlerta) {
		AlertaDatos ad = new AlertaDatos();
		
		List<Alerta> alertas = null;
		
		try {
			List<Alerta> alertasTmp = ad.conseguirTodasLasAlertas(null, 0, null, EstadoAlerta.ACTIVA);
			
			for(Alerta alerta : alertasTmp) {
				if(alerta.getTipoAlerta()==tipoAlerta)
					alertas.add(alerta);
			}
			
		}
		catch (Exception e) {
			e.printStackTrace();
		}
		
		return alertas;
	}	
	
	public static Alerta conseguirUnaAlerta(String objeto, int idObjeto, String motivoAlerta, EstadoAlerta estado) {
		// TODO Auto-generated method stub
		AlertaDatos ad = new AlertaDatos();
		
		Alerta alerta = null;
		
		try {
			alerta = ad.conseguirUnaAlerta(objeto, idObjeto, motivoAlerta, estado);
			
		}
		catch (Exception e) {
			e.printStackTrace();
		}
		
		
		return alerta;
	}

	public static Alerta conseguirUnaAlerta(int idAlerta) {
		// TODO Auto-generated method stub
		AlertaDatos ad = new AlertaDatos();
		
		Alerta alerta = null;
		
		try {
			alerta = ad.conseguirUnaAlerta(idAlerta);
			
		}
		catch (Exception e) {
			e.printStackTrace();
		}
		
		return alerta;
	}	
	
	public static boolean actualizarAlerta(Alerta alerta, Usuario usuario) {
		// TODO Auto-generated method stub
		AlertaDatos ad = new AlertaDatos();
		
		boolean ok = false;
		
		
		//Buscamos alerta x licencia
		Alerta alertaOld;
		try {
			
			if(alerta.getIdAlerta()>0)
				alertaOld = ad.conseguirUnaAlerta(alerta.getIdAlerta());
			else
				alertaOld = ad.conseguirUnaAlerta(alerta.getObjeto(),alerta.getIdObjeto(),alerta.getMotivoAlerta(),alerta.getEstado());
			
			if(alertaOld != null) {
				ok = ad.actualizarAlerta(alertaOld, alerta.getEstado(), alerta.getKmAlerta(), alerta.getFechaAlerta(), usuario);
			} else {
				ok = (ad.grabarNuevaAlerta(alerta) > 0);
			}				
			
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	
		
		return ok;
		
	}

	public static int grabarAlerta(Alerta alerta) {
		AlertaDatos ad = new AlertaDatos();
		
		return ad.grabarNuevaAlerta(alerta);		
	}

	public static void cargarObjetos(Alerta alerta) {
		if(alerta.getObjeto().equals("Chofer"))
			alerta.setObj(ChoferManager.conseguirUnChofer(alerta.getIdObjeto()));
		else if(alerta.getObjeto().equals("Auto"))
			alerta.setObj(AutoManager.conseguirUnAuto(alerta.getIdObjeto()));
		else
			alerta.setObj(null);
	}	
	
	public static void cargarObjetos(List<Alerta> alertas) {
		for(Alerta alerta: alertas) {
			if(alerta.getObjeto().equals("Chofer"))
				alerta.setObj(ChoferManager.conseguirUnChofer(alerta.getIdObjeto()));
			else if(alerta.getObjeto().equals("Auto"))
				alerta.setObj(AutoManager.conseguirUnAuto(alerta.getIdObjeto()));
			else
				alerta.setObj(null);
		}
	}


	public static boolean borrarUnaAlerta(int idAlerta, Usuario usuario) {
		AlertaDatos ad = new AlertaDatos();
		boolean ok = ad.actualizarAlerta(idAlerta, EstadoAlerta.ELIMINADA, null, null, usuario);
		return ok ;
	}
	
	public static Alerta verificarAlerta(Auto auto) {
		Alerta alerta = null;
		
		
		
		return alerta;
	}
}
